package com.cxf.windex.base.util;

import java.io.IOException;
import java.math.BigDecimal;
import java.text.DecimalFormat;


public class BigDecimalUtil {

    public static BigDecimal addObject(Object val1, Object val2) {
        return add(String.valueOf(val1), String.valueOf(val2));

    }

    public static BigDecimal add(String val1, String val2) {
        BigDecimal x1 = new BigDecimal(val1);
        BigDecimal x2 = new BigDecimal(val2);
        x1 = x1.add(x2);
        return x1;
    }

    public static BigDecimal mutiply(String val1, String val2) {
        BigDecimal x1 = new BigDecimal(val1);
        BigDecimal x2 = new BigDecimal(val2);
        x1 = x1.multiply(x2);
        return x1;
    }

    /**
     * 多个数相乘
     *
     * @param valArr
     *            相乘的参数
     * @return
     */
    public static BigDecimal mutiplyArr(String[] valArr) {

        BigDecimal init = new BigDecimal("1");
        for (String val : valArr) {
            BigDecimal x1 = new BigDecimal(val);
            init = init.multiply(x1);
        }
        return init;
    }

    /**
     * 多个数相加
     *
     * @param valArr
     *            相加的参数
     * @return
     */
    public static BigDecimal addArr(String[] valArr) {

        BigDecimal init = new BigDecimal("0");
        for (String val : valArr) {
            BigDecimal x1 = new BigDecimal(val);
            init = init.add(x1);
        }
        return init;
    }

    public static BigDecimal subtract(String val1, String val2) {
        BigDecimal x1 = new BigDecimal(val1);
        BigDecimal x2 = new BigDecimal(val2);
        x1 = x1.subtract(x2);
        return x1;
    }

    public static BigDecimal divide(String val1, String val2) {
        BigDecimal x1 = new BigDecimal(val1);
        BigDecimal x2 = new BigDecimal(val2);
        x1 = x1.divide(x2);
        return x1;
    }

    public static String numFormate(float num, String format) {
        DecimalFormat decimalFormat = new DecimalFormat(format);
        return decimalFormat.format(num);
    }

    public static void main(String[] args) throws IOException {

        System.out.println(BigDecimal.ONE.compareTo(BigDecimal.ZERO));
        BigDecimal s = new BigDecimal("61").divide(new BigDecimal("30"), 0, BigDecimal.ROUND_DOWN);
        System.out.println(s.intValue());

        System.out.println(BigDecimalUtil.numFormate((float) 10000.0, ",###0.00"));
        BigDecimal newIncome = BigDecimalUtil.mutiplyArr(new String[] { "100", "9" }).divide(new BigDecimal("30"), 2, BigDecimal.ROUND_HALF_UP);
        System.out.println(newIncome.floatValue());

        BigDecimal income = BigDecimalUtil.mutiplyArr(new String[] { "-100", "30", "3", "9.9" }).divide(new BigDecimal("100")).divide(new BigDecimal("360"));
        System.out.println(income.toString());
    }
}
